package com.sg.dto.biz.app.common;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


/**
 * @desc BusAppDocRelaDto
 * @使用场景
 */
@Data
public class BusAppDocRelaDto extends BaseDto implements Serializable {

    /**
     * 文档关系ID
     */
    @ApiModelProperty("文档关系ID")
    private String unstructuredDataRelationshipId;

    /**
     * 文档ID
     */
    @ApiModelProperty("文档ID")
    private String unstructuredDataId;

    /**
     * 文件相对路径地址
     */
    @ApiModelProperty("文件相对路径地址")
    private String fileRelativePathAccess;
    /**
     * 文档名称
     */
    @ApiModelProperty("文档名称")
    private String unstructuredDataName;

    /**
     * 文件大小
     */
    @ApiModelProperty("文件大小")
    private String fileSize;

    /**
     * 文档后缀
     */
    @ApiModelProperty("文档后缀")
    private String postfix;

    /**
     * 文档明细类型 WORD:WORD文档 EXCEL:EXCEL文档 PDF:PDF文档
     */
    @ApiModelProperty("文档明细类型")
    private String unstructuredDataDetailType;

    /**
     * 是否支持预览 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否支持预览")
    private String isSupportPreview;
    /**
     * 是否是网盘引用关系 TRUE:是 FALSE:否
     */
    @NotNull(message = "是否是网盘引用关系不能为空")
    @ApiModelProperty("是否是网盘引用关系")
    private String isNetworkReference;

    /**
     * 冗余是否结果文档 TRUE:是 FALSE:否
     */
    @ApiModelProperty("冗余是否结果文档")
    private String isResult;
    /**
     * 文档类型 FILE:文档 MEDIA_CONTENT:媒体内容 OTHER:其它
     */
    @ApiModelProperty("文档类型")
    private String unstructuredDataType;
    /**
     * 业务应用文档归属类型编码 EVA_TEMP:评价模板 TARGET:目标 TARGET_CATEGORY:目标分类 OBJECTIVE:指标 NOTICE:通知公告 TASK:任务 ACHIEVEMENT:成果 TARGET_CYCLE_STAGE_DATA:目标周期阶段资料 PLANNING:规划资料
     */
    @ApiModelProperty("业务应用文档归属类型编码")
    private String bizAppFileTypeCode;

    /**
     * 归属内容实例ID
     */
    @ApiModelProperty("归属内容实例ID")
    private String entityId;

    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 来源文档关系ID
     */
    @ApiModelProperty("来源文档关系ID")
    private String sourceRelationshipId;
    /**
     * 文件全路径地址
     */
    @ApiModelProperty("文件全路径地址")
    private String fileAllPathAccess;
    /**
     * 关系类型编码 DIRECT_RELATION:直接关系 INDIRECT_RELATIONSHIP:间接关系
     */
    @ApiModelProperty("关系类型编码")
    private String relationshipType;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BusAppDocRelaDto that = (BusAppDocRelaDto) o;
        return unstructuredDataRelationshipId == that.unstructuredDataRelationshipId && unstructuredDataId == that.unstructuredDataId && fileRelativePathAccess == that.fileRelativePathAccess && unstructuredDataName == that.unstructuredDataName && fileSize == that.fileSize && postfix == that.postfix && unstructuredDataDetailType == that.unstructuredDataDetailType && isSupportPreview == that.isSupportPreview && isNetworkReference == that.isNetworkReference && isResult == that.isResult && unstructuredDataType == that.unstructuredDataType && bizAppFileTypeCode == that.bizAppFileTypeCode && entityId == that.entityId && orderNumber == that.orderNumber && operateTime == that.operateTime && sourceRelationshipId == that.sourceRelationshipId && fileAllPathAccess == that.fileAllPathAccess && relationshipType == that.relationshipType;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), unstructuredDataRelationshipId, unstructuredDataId, fileRelativePathAccess, unstructuredDataName, fileSize, postfix, unstructuredDataDetailType, isSupportPreview, isNetworkReference, isResult, unstructuredDataType, bizAppFileTypeCode, entityId, orderNumber, operateTime, sourceRelationshipId, fileAllPathAccess, relationshipType);
    }


}
   